package entity

import (
	"time"

	"go.mongodb.org/mongo-driver/bson/primitive"
	"gorm.io/gorm"
)

//账号  用户密码登录 生成一个账号 某个账号下 还会有多个角色

//简单一点 直接使用账号登录 账号->对应一个用户的角色  1对1

type Account struct {
	Id           primitive.ObjectID `bson:"_id,omitempty"`
	Uid          string             `bson:"uid"`
	Gid          string             `bson:"gid"`
	Account      string             `bson:"account"`
	Password     string             `bson:"password"`
	PhoneAccount string             `bson:"phoneAccount"`
	WxAccount    string             `bson:"wxAccount"`
	CreateTime   time.Time          `bson:"createTime"`
}

// mysql数据库存储用户信息一个用户一条记录
type User struct {
	gorm.Model
	ID            int64  `gorm:"primaryKey;autoIncrement" json:"ID"`
	Gid           int64  `gorm:"column:gid" json:"gid"`
	Account       string `gorm:"column:account" json:"account"`
	RegTIme       int64  `gorm:"column:reg_time" json:"reg_time"`
	RegDate       int64  `gorm:"column:reg_date" json:"reg_date"`
	LastLoginTime int64  `gorm:"column:last_login_time" json:"last_login_time"`
	LastLoginIp   string `gorm:"column:last_login_ip" json:"last_login_ip"`
	WxOpenid      string `gorm:"column:wx_openid" json:"wx_openid"`
	Password      string `gorm:"column:password" json:"password"`
}

func (u *User) TableName() string {
	return "users"
}

// 登录日志
type LoginLog struct {
	Id           primitive.ObjectID `bson:"_id,omitempty"`
	Uid          int64              `bson:"uid"`
	EventDate    int64              `bson:"event_date"`
	EventTime    int64              `bson:"event_time"`
	Gid          int64              `bson:"gid"`
	Account      string             `bson:"account"`
	RegTIme      int64              `bson:"reg_time"`
	RegDate      int64              `bson:"reg_date"`
	Ip           string             `bson:"ip"`
	WxOpenid     string             `bson:"wx_openid"`
	WxSessionKey string             `bson:"wx_session_key"`
}

func (l *LoginLog) TableName() string {
	return "loging_log"
}

/**
 * 用户归因，只做第一次归因
 */
type UserCLickAttr struct {
	ID     int64  `gorm:"column:id" json:"id"`
	Gid    int64  `gorm:"column:gid" json:"gid"`
	Uid    int64  `gorm:"column:uid" json:"uid"`
	Ymd    int64  `gorm:"column:ymd" json:"ymd"`
	Scene  int16  `gorm:"column:scene" json:"scene"`
	Key    string `gorm:"column:key" json:"key"`
	Value  string `gorm:"column:value" json:"value"`
	Ext    string `gorm:"column:ext" json:"ext"`
	Ext1   string `gorm:"column:ext1" json:"ext1"`
	OpenID string `gorm:"column:openid" json:"openid"`
	ATime  int64  `gorm:"column:atime" json:"atime"`
	// ADateTime string `gorm:"column:adatetime" json:"adatetime"`
}

func (u *UserCLickAttr) TableName() string {
	return "user_click_attr"
}

// 点击日志
type ClickLog struct {
	Id     primitive.ObjectID `bson:"_id,omitempty"`
	Gid    int64              `bson:"gid"`
	Uid    int64              `bson:"uid"`
	OpenId string             `bson:"openid"`
	Scene  int16              `bson:"scene"`
	Ip     string             `bson:"ip"`
	Ymd    int64              `bson:"ymd"`
	ATime  int64              `bson:"atime"`
	Param  string             `bson:"params"`
}

func (u *ClickLog) TableName() string {
	return "click_log"
}
